跳到主要內容 跳至補充內容

concat 函數的範例

CONCAT() 函數不得與 CONCATENATE 指令碼關鍵字相混淆。

簡單來說,Concat() 是用來將多個值/文字/選項串連/聯結成一個字串。不過,它可以用在許多方面,協助解決不同的問題。所有範例均依據下列表格:

Example string table data
範例字串表格資料
Table MyColumn Date Value
Data JKL 01/01/2012 11
Data1 WVX 01/02/2012 13
Data GHI 01/03/2012 13
Data ABC 01/04/2012 15
Data1 STU 01/05/2012 18
Data1 PQR 01/06/2012 10
Data1 MNO 01/07/2012 25
Data DEF 01/08/2012 11

簡單字串串連

上文提到,concat 函數可以串連值清單中的值。這些值可以是固定值,也可以是隨著選項/資料而變化的值。

=CONCAT(MyColumn,',')

=CONCAT(DISTINCT MyColumn,',')

這組簡單的 concat 陳述式會串連 MyColumn 資料行的所有可能值。您可能會想要新增相異 (DISTINCT) 關鍵字。這可確保各個值在字串中僅顯示一次:

ABC,DEF,GHI,JKL,MNO,PQR,STU,VWX

使用簡單的 concat 時,您可以選擇將排序加權新增到函數,以便按照您選擇的資料行排列字串值。以下範例已新增日期資料行來排序值。

=CONCAT(MyColumn, ',', Date)

結果:JKL,VWX,GHI,ABC,STU,PQR,MNO,DEF

運算式/set 陳述式中的 Concat()

範例: 將多個動態值傳遞到集合分析運算式

有時候您會想要將動態選取的值傳遞到 set 陳述式。若要這麼做,您需要將幾個單引號新增到字串,以便 CONCAT() 函數傳回 'JKL','VWX' 等等。但是,您無法直接使用單引號,因為評估 Concat 時會解譯單引號,而評估 set 運算式時則不會。需要改用 Chr() 函數:

=CONCAT(Chr(39)&MyColumn&Chr(39),',')

您可以接著將此 concat 陳述式傳遞到運算式內:

=Sum({<MyColumn={$(=CONCAT(Chr(39)&MyColumn&Chr(39),','))}>} Value)

在大多數情況下,可以在資料島出現時使用這項技巧。它可以讓您將值傳遞到不影響資料模型任何部份的運算式,因為資料島表格無法聯結至資料模型。

指令碼中的 Concat()

Concat 也可以在指令碼中用來將多列轉換為一個單一資料行值,就和其他任何彙總一樣。

記住先前使用的來源資料,指令碼端 CONCAT 的結果如下:

ConcatExample:
Load Table,
Concat(MyColumn,',') as CombinedData
Resident Temp
Group By Table;

下列是此指令碼函數的結果:

表格形式的範例輸出
Table CombinedData
Data ABC,DEF,GHI,JKL
Data1 MNO,PQR,STU,WVX

使用 Rank() 影響 Concat()

開始使用其他函數來搭配 concat(),就會開始獲得明智的結果。在此範例中,Rank() 已用來擷取前三個演出者 (按照 Value) 並加以串連。

=CONCAT(IF(aggr(Rank(sum(Value)),MyColumn)<=3,MyColumn),',')

結果:ABC,MNO,STU

此頁面是否對您有幫助?

若您發現此頁面或其內容有任何問題——錯字、遺漏步驟或技術錯誤——請告知我們可以如何改善!

加入分析現代化計畫

Remove banner from view

透過分析現代化程式進行現代化而不犧牲寶貴的 QlikView 應用程式。 按一下這裡 取得更多資訊或聯繫: ampquestions@qlik.com